Kr^x: Comprehensive Kernel Protection Against Just-In-Time Code Reuse